package com.unitd.frame.mybatis.plugin.shard.strategy;

import java.util.List;

 /**
 * @desc 数据库分库策略接口
 * @filename ShardStrategy.java
 * @copyright www.unitd.com
 * @author Hudan
 * @version 1.0
 * @date 2017/3/5
 */
public interface ShardStrategy<T> {

	/**
	 * @desc 分库字段
	 * @return String
	 */
	String shardDbField();

	/**
	 * @desc 分库字段对应实体属性名
	 * @return String
	 */
	String shardEntityField();

	/**
	 * @desc 分配逻辑
	 * @param value
	 * @return 数据库index
	 */
	int assigned(Object value);

	/**
	 * @desc 忽略分库表名列表
	 * @return String
	 */
	List<String> ignoreTables();

	/**
	 * @desc 是否全局
	 * @return String
	 */
	boolean isGlobal();
}